home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Reprezentacja dwunoznego pawna przy pomocy fizyki ODE
- // Ze skryptu korzysta ODEPhysicsRagdoll.cpp
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- !include("ODEPhysics.def")
-
- !RagdollParams()
- !Mass(f) // masa ciala [kg]
-
- !BonesWeightDistribution() // pozwala na ustalenie rozkladu masy
- !SetBoneWeight(s,f) // ustawia mase danej kosci
-
- //TODO !ContactParamsTorso() // ustawienia kolizji dla tulowia
- //TODO
-
- //TODO !ContactParamsLimbs() // ustawienia kolizji dla konczyn
-
- //TODO !ContactParamsOff() // wylaczenie kolizji
-
- !Joints()
- !Set3DOFStops(s,f,f,f,f,f,f) // ustawienie parametrow stopu w joincie z 3 stopniami swobody
- !Set2DOFStops(s,f,f,f,f) // ustawienie parametrow stopu w joincie z 2 stopniami swobody
- !Set1DOFStops(s,f,f) // ustawienie parametrow stopu w joincie z 1 stopniem swobody
- !SetFrictionForce(s,f) // sila tarcia jointa - sila probujaca zatrzymac np. zgiecie reki
- !SetStopCFM(s,f) // parametr CFM w reakcji na osiagniecie stopu
- !SetStopERP(s,f) // parametr ERP w reakcji na osiagniecie stopu
- !SetCFM(s,f) // parametr CFM jointa
- !SetFudgeFactor(s,f) // parametr FudgeFactor - okreslajacy wspolczynnik zawrocenia jointa ze stopu
- !SetAnchorPosition(s,f,f,f,f,f,f) // ustawia pozycje stawu (anchora jointa) na podstawie 2 wektorow odleglosci wzglednych od srodkow kosci
-
- //-------------------------------------------------------------------------------
-
- RagdollParams()
- {
- Mass(100)
- }
-
- //-------------------------------------------------------------------------------
-
- PhysicsParams()
- {
- SetPhysicsSurfaceID(SRF_FLESH)
-
- SetMaxVels(4000, 50)
-
- SetCollisionDepthCompressor(0.9, 2)
-
- SetAutoDisableVels(10, 10, 1)
-
- SetAbsorbers(0, 0)
-
- SetWaterFloat(0.08)
- }
-
- //-------------------------------------------------------------------------------
- //TODO
- /*
- CollisionResponseTorso()
- {
- SetResponse("Terrain", "Slip")
- SetResponseParam("Terrain", 0.0002)
-
- SetResponse("NonODEObjects", "Slip")
- SetResponseParam("NonODEObjects", 0.0002)
-
- SetResponse("ODEObjects", "Slip")
- SetResponseParam("ODEObjects", 0.0002)
-
- SetResponse("ODEObjectsSamePhysics", "Ignore")
-
- SetResponse("Trees", "Slip")
- SetResponseParam("Trees", 0.0002)
- }
-
- //-------------------------------------------------------------------------------
-
- CollisionResponseLimbs()
- {
- SetResponse("Terrain", "Slip")
- SetResponseParam("Terrain", 0.001)
-
- SetResponse("NonODEObjects", "Slip")
- SetResponseParam("NonODEObjects", 0.001)
-
- SetResponse("ODEObjects", "Slip")
- SetResponseParam("ODEObjects", 0.001)
-
- SetResponse("ODEObjectsSamePhysics", "Slip")
- SetResponseParam("ODEObjectsSamePhysics", 0.1)
-
- SetResponse("Trees", "Slip")
- SetResponseParam("Trees", 0.001)
- }
-
- //-------------------------------------------------------------------------------
-
- CollisionResponseOff()
- {
- SetResponse("Terrain", "Ignore")
- SetResponse("NonODEObjects", "Ignore")
- SetResponse("ODEObjects", "Ignore")
- SetResponse("ODEObjectsSamePhysics", "Ignore")
- SetResponse("Trees", "Ignore")
- }
- */
- //-------------------------------------------------------------------------------
-
- Joints()
- {
- // parametry stopu
- Set3DOFStops("PELVIS L_THIGH", -0.15, 0.60, -0.09, 0.30, -0.40, 0.12)
- Set3DOFStops("PELVIS R_THIGH", -0.15, 0.60, -0.30, 0.09, -0.12, 0.40)
- Set1DOFStops("L_THIGH L_CALF", -0.02, 0.89) //0.49
- Set1DOFStops("R_THIGH R_CALF", -0.02, 0.89) //0.49
- Set3DOFStops("PELVIS SPINE1", -0.10, 0.10, -0.05, 0.05, -0.15, 0.15)
- Set3DOFStops("SPINE1 HEAD", -0.40, 0.20, -0.20, 0.20, -0.30, 0.30)
- Set3DOFStops("SPINE1 L_UPPERARM", -0.45, 0.45, -0.30, 0.70, -0.25, 0.25)
- Set3DOFStops("SPINE1 R_UPPERARM", -0.45, 0.45, -0.70, 0.30, -0.25, 0.25)
- Set1DOFStops("L_UPPERARM L_FOREARM", -0.02, 0.79)
- Set1DOFStops("R_UPPERARM R_FOREARM", -0.79, 0.02)
-
- // polozenie stawow
- SetAnchorPosition("PELVIS L_THIGH", 0.00, 0.50, 0.00, -0.50, 0.00, 0.00)
- SetAnchorPosition("PELVIS R_THIGH", 0.00, -0.50, 0.00, -0.50, 0.00, 0.00)
- SetAnchorPosition("PELVIS SPINE1", 1.10, 0.00, 0.00, -1.10, 0.00, 0.00)
- SetAnchorPosition("L_THIGH L_CALF", 0.50, 0.00, 0.00, -0.50, 0.00, 0.00)
- SetAnchorPosition("R_THIGH R_CALF", 0.50, 0.00, 0.00, -0.50, 0.00, 0.00)
- SetAnchorPosition("SPINE1 HEAD", 0.50, 0.00, 0.00, -0.50, 0.00, 0.00)
- SetAnchorPosition("SPINE1 L_UPPERARM", 0.30, 0.45, 0.00, -0.49, 0.00, 0.00)
- SetAnchorPosition("SPINE1 R_UPPERARM", 0.30, -0.45, 0.00, -0.49, 0.00, 0.00)
- SetAnchorPosition("L_UPPERARM L_FOREARM", 0.50, 0.00, 0.00, -0.50, 0.00, 0.00)
- SetAnchorPosition("R_UPPERARM R_FOREARM", 0.50, 0.00, 0.00, -0.50, 0.00, 0.00)
-
- // sily tarcia stawow
- SetFrictionForce("PELVIS L_THIGH", 6)
- SetFrictionForce("PELVIS R_THIGH", 6)
- SetFrictionForce("L_THIGH L_CALF", 2)
- SetFrictionForce("R_THIGH R_CALF", 2)
- SetFrictionForce("PELVIS SPINE1", 10)
- SetFrictionForce("SPINE1 HEAD", 4)
- SetFrictionForce("SPINE1 L_UPPERARM", 6)
- SetFrictionForce("SPINE1 R_UPPERARM", 6)
- SetFrictionForce("L_UPPERARM L_FOREARM", 2)
- SetFrictionForce("R_UPPERARM R_FOREARM", 2)
-
- // wspolczynniki dopuszczalnych bledow stopow
- SetStopERP("PELVIS L_THIGH", 0.1)
- SetStopERP("PELVIS R_THIGH", 0.1)
- SetStopERP("L_THIGH L_CALF", 0.1)
- SetStopERP("R_THIGH R_CALF", 0.1)
- SetStopERP("PELVIS SPINE1", 0.1)
- SetStopERP("SPINE1 HEAD", 0.1)
- SetStopERP("SPINE1 L_UPPERARM", 0.1)
- SetStopERP("SPINE1 R_UPPERARM", 0.1)
- SetStopERP("L_UPPERARM L_FOREARM", 0.1)
- SetStopERP("R_UPPERARM R_FOREARM", 0.1)
-
- // wspolczynniki sprezystosci jointow po osiagnieciu stopow
- SetStopCFM("PELVIS L_THIGH", 0.001)
- SetStopCFM("PELVIS R_THIGH", 0.001)
- SetStopCFM("L_THIGH L_CALF", 0.001)
- SetStopCFM("R_THIGH R_CALF", 0.001)
- SetStopCFM("PELVIS SPINE1", 0.001)
- SetStopCFM("SPINE1 HEAD", 0.001)
- SetStopCFM("SPINE1 L_UPPERARM", 0.001)
- SetStopCFM("SPINE1 R_UPPERARM", 0.001)
- SetStopCFM("L_UPPERARM L_FOREARM", 0.001)
- SetStopCFM("R_UPPERARM R_FOREARM", 0.001)
-
- // wspolczynniki sprezystosci jointow
- SetCFM("PELVIS L_THIGH", 0.0001)
- SetCFM("PELVIS R_THIGH", 0.0001)
- SetCFM("L_THIGH L_CALF", 0.0001)
- SetCFM("R_THIGH R_CALF", 0.0001)
- SetCFM("PELVIS SPINE1", 0.0001)
- SetCFM("SPINE1 HEAD", 0.0001)
- SetCFM("SPINE1 L_UPPERARM", 0.0001)
- SetCFM("SPINE1 R_UPPERARM", 0.0001)
- SetCFM("L_UPPERARM L_FOREARM", 0.0001)
- SetCFM("R_UPPERARM R_FOREARM", 0.0001)
-
- // wspolczynniki tlumienia sily oddalajacej od stopu (1 - brak tlumienia, 0.5 - sila zmniejszona dwukrotnie)
- SetFudgeFactor("PELVIS L_THIGH", 0.9)
- SetFudgeFactor("PELVIS R_THIGH", 0.9)
- SetFudgeFactor("L_THIGH L_CALF", 0.9)
- SetFudgeFactor("R_THIGH R_CALF", 0.9)
- SetFudgeFactor("PELVIS SPINE1", 0.9)
- SetFudgeFactor("SPINE1 HEAD", 0.9)
- SetFudgeFactor("SPINE1 L_UPPERARM", 0.9)
- SetFudgeFactor("SPINE1 R_UPPERARM", 0.9)
- SetFudgeFactor("L_UPPERARM L_FOREARM", 0.9)
- SetFudgeFactor("R_UPPERARM R_FOREARM", 0.9)
- }
-
- //-------------------------------------------------------------------------------
-
- BonesWeightDistribution()
- {
- // ustawiamy ratio masy uzywanych kosci
- SetBoneWeight("Pelvis", 30) // miednica
- SetBoneWeight("Spine1", 45) // klatka piersiowa
- SetBoneWeight("Head", 10) // glowa
- SetBoneWeight("L Upperarm", 15) // lewe ramie
- SetBoneWeight("L Forearm", 10) // lewe przedramie
- SetBoneWeight("R Upperarm", 15) // prawe ramie
- SetBoneWeight("R Forearm", 10) // prawe przedramie
- SetBoneWeight("L Thigh", 25) // lewe udo
- SetBoneWeight("R Thigh", 25) // prawe udo
- SetBoneWeight("L Calf", 15) // lewa lydka
- SetBoneWeight("R Calf", 15) // prawa lydka
- }
-
- //-------------------------------------------------------------------------------
-
- CollisionSoundsParams()
- {
- SetFreqMinMax(0.6, 1.5)
- SetInterval(0.1)
-
- SetHitMinVolumeLinVel(30)
- SetHitMaxVolumeLinVel(800)
-
- SetFrictionMinVolumeLinVel(2000)
- SetFrictionMaxVolumeLinVel(5000)
- SetFrictionDotThreshold(0.04)
-
- SetHitSound(SRF_UNKNOWN, "Data/Sounds/collision/common/hit_default_XX.wav")
- // SetFrictionSound(SRF_UNKNOWN, "Data/Sounds/collision/common/friction_default_XX.wav")
-
- SetHitSound(SRF_WOOD, "Data/Sounds/collision/common/hit_wood_XX.wav")
- SetHitSound(SRF_STONE, "Data/Sounds/collision/common/hit_stone_XX.wav")
- SetHitSound(SRF_SNOW, "Data/Sounds/collision/common/hit_snow_XX.wav")
- SetHitSound(SRF_MUD, "Data/Sounds/collision/common/hit_mud_XX.wav")
- SetHitSound(SRF_FLESH, "Data/Sounds/collision/common/hit_flesh_XX.wav")
- SetHitSound(SRF_GLASS, "Data/Sounds/collision/common/hit_glass_XX.wav")
- SetHitSound(SRF_METAL, "Data/Sounds/collision/common/hit_metal_XX.wav")
- SetHitSound(SRF_PLEXIGLASS, "Data/Sounds/collision/common/hit_plastic_XX.wav")
- SetHitSound(SRF_PLASTIC, "Data/Sounds/collision/common/hit_plastic_XX.wav")
- SetHitSound(SRF_GROUND, "Data/Sounds/collision/common/hit_ground_XX.wav")
- SetHitSound(SRF_GRASS, "Data/Sounds/collision/common/hit_grass_XX.wav")
- SetHitSound(SRF_WATER, "Data/Sounds/collision/common/hit_water_XX.wav")
- }
-
- //-------------------------------------------------------------------------------
-
-
-
-
-